Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit d95894e

Browse files
COCI
1 parent c20480c commit d95894e

File tree

3 files changed

+130
-0
lines changed

3 files changed

+130
-0
lines changed

‎DMOJ/coci14c3p4.cpp

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#include <bits/stdc++.h>
2+
using namespace std;
3+
4+
const int MAXN = 5*1e5 + 10;
5+
const int MAXK = 653;
6+
7+
int dp[MAXK][MAXK],matriz[MAXK][MAXK],A[MAXN],B[MAXN],N;
8+
9+
int calcula(int x1,int y1,int x2,int y2){
10+
if(x1 > x2 || y1 > y2) return 0;
11+
return dp[x2][y2] - dp[x1-1][y2] - dp[x2][y1 - 1] + dp[x1-1][y1-1];
12+
}
13+
14+
int main(){
15+
16+
scanf("%d",&N);
17+
for(int i = 1;i<=N;i++){
18+
scanf("%d %d",&A[i],&B[i]);
19+
A[i]++;B[i]++;
20+
dp[A[i]][B[i]]++;
21+
matriz[A[i]][B[i]]++;
22+
}
23+
24+
for(int i = 1;i<MAXK;i++){
25+
for(int j = 1;j<MAXK;j++){
26+
dp[i][j] += dp[i][j-1] + dp[i-1][j] - dp[i-1][j-1];
27+
}
28+
}
29+
30+
for(int i = 1;i<=N;i++){
31+
int x = A[i],y = B[i];
32+
int melhores = calcula(x+1,y+1,MAXK-1,MAXK-1);
33+
int piores = calcula(1,1,x-1,y-1);
34+
if(A[i] == 651) piores += matriz[1][B[i]];
35+
if(B[i] == 651) piores += matriz[A[i]][1];
36+
printf("%d %d\n",melhores+1,N - piores);
37+
}
38+
39+
return 0;
40+
}

‎DMOJ/coci14c4p2.cpp

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#include <bits/stdc++.h>
2+
using namespace std;
3+
4+
typedef pair<int,int> ii;
5+
6+
int main(){
7+
8+
map<int,int> frequencias;
9+
deque<ii> sequencia;
10+
int N,vez = 0;
11+
12+
scanf("%d",&N);
13+
for(int i = 1;i<=N;i++){
14+
int x;
15+
scanf("%d",&x);
16+
frequencias[x]++;
17+
}
18+
for(map<int,int>::iterator it = frequencias.begin();it != frequencias.end();it++){
19+
sequencia.push_back(*it);
20+
}
21+
22+
while(sequencia.size() > 3){
23+
int minimo = min(sequencia.front().second,sequencia.back().second);
24+
sequencia.front().second -= minimo;
25+
sequencia[1].second += minimo;
26+
sequencia.back().second -= minimo;
27+
sequencia[sequencia.size() - 2].second += minimo;
28+
if(sequencia.front().second == 0) sequencia.pop_front();
29+
if(sequencia.back().second == 0) sequencia.pop_back();
30+
}
31+
while(sequencia.size() == 3){
32+
if(vez == 0){
33+
vez ^= 1;
34+
sequencia.front().second -= 1;
35+
sequencia[1].second += 1;
36+
if(sequencia.front().second == 0) sequencia.pop_front();
37+
}
38+
else{
39+
vez ^= 1;
40+
sequencia.back().second -= 1;
41+
sequencia[sequencia.size() - 2].second += 1;
42+
if(sequencia.back().second == 0) sequencia.pop_back();
43+
}
44+
}
45+
46+
if(vez == 0) printf("Slavko\n");
47+
else printf("Mirko\n");
48+
printf("%d %d\n",sequencia.front().first,sequencia.back().first);
49+
50+
return 0;
51+
}

‎DMOJ/coci14c6p2.cpp

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#include <bits/stdc++.h>
2+
using namespace std;
3+
4+
const int MAXN = 25;
5+
6+
int dp[MAXN][MAXN][MAXN][MAXN],tipo[MAXN][3],N,M;
7+
set<char> entrada[MAXN];
8+
9+
int solve(int pos,int a,int b,int c){
10+
if(a == 0 && b == 0 && c == 0) return 1;
11+
if(pos == M + 1) return 0;
12+
if(dp[pos][a][b][c] != -1) return dp[pos][a][b][c];
13+
int possivel = 0;
14+
if(entrada[pos].count('O')) possivel |= solve(pos+1,max(a-1,0),b,c);
15+
if(entrada[pos].count('V')) possivel |= solve(pos+1,a,max(b-1,0),c);
16+
if(entrada[pos].count('N')) possivel |= solve(pos+1,a,b,max(c-1,0));
17+
return dp[pos][a][b][c] = possivel;
18+
}
19+
20+
int main(){
21+
22+
memset(dp,-1,sizeof(dp));
23+
scanf("%d",&N);
24+
for(int i = 1;i<=N;i++) scanf("%d%*c%d%*c%d",&tipo[i][0],&tipo[i][1],&tipo[i][2]);
25+
26+
scanf("%d",&M);
27+
for(int i = 1;i<=M;i++){
28+
string s;
29+
cin >> s;
30+
for(char c : s) entrada[i].insert(c);
31+
}
32+
33+
for(int i = 1;i<=N;i++){
34+
if(solve(1,tipo[i][0],tipo[i][1],tipo[i][2])) printf("DA\n");
35+
else printf("NE\n");
36+
}
37+
38+
return 0;
39+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /