Skip to content

Commit fefdc2e

Browse files
committed
round246
1 parent c32745c commit fefdc2e

File tree

6 files changed

+171
-0
lines changed

6 files changed

+171
-0
lines changed

codeforces/round246/a.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#include<iostream>
2+
#include<stdlib.h>
3+
#include<stdio.h>
4+
5+
int main(){
6+
int n , k, x, count = 0 ;
7+
while(scanf("%d%d", &n, &k) != EOF ){
8+
count = 0 ;
9+
for(int i = 0 ; i < n ; ++ i){
10+
scanf("%d", &x);
11+
if(x + k <= 5){
12+
count ++ ;
13+
}
14+
}
15+
printf("%d\n", count / 3);
16+
}
17+
return 0 ;
18+
}

codeforces/round246/a.in

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
5 2
2+
0 4 5 1 0
3+
6 4
4+
0 1 2 3 4 5
5+
6 5
6+
0 0 0 0 0 0

codeforces/round246/b.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#include<iostream>
2+
#include<stdlib.h>
3+
#include<stdio.h>
4+
#include<string.h>
5+
6+
#define MAXN 100005
7+
8+
int main(){
9+
int n, i, a[MAXN], b[MAXN], ac[MAXN], bc[MAXN] ;
10+
while(scanf("%d", &n) !=EOF ){
11+
memset(ac , 0 , sizeof(ac));
12+
memset(bc , 0 , sizeof(bc));
13+
for(int i = 0 ; i < n ; ++ i){
14+
scanf("%d%d", &a[i], &b[i]);
15+
ac[ a[i] ] += 1 ;
16+
bc[ b[i] ] += 1 ;
17+
}
18+
for(int i = 0 ; i < n ; ++ i){
19+
int delta = ac[ b[i] ] ;
20+
printf("%d %d\n", n - 1 + delta , n - 1 - delta);
21+
}
22+
}
23+
return 0 ;
24+
}

codeforces/round246/b.in

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
2
2+
1 2
3+
2 1
4+
5+
3
6+
1 2
7+
2 1
8+
1 3

codeforces/round246/c.cpp

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
#include<iostream>
2+
#include<stdlib.h>
3+
#include<string.h>
4+
#include<stdio.h>
5+
#include<map>
6+
#include<algorithm>
7+
8+
using namespace std ;
9+
10+
11+
#define MAXN 100001
12+
13+
typedef pair<int, int> PII;
14+
15+
int p[MAXN], p_size = 0, is[MAXN] ;
16+
17+
int val[MAXN], ret[5 * MAXN][2], ret_size ;
18+
19+
20+
map< int, int > mp;
21+
22+
23+
int get_primes(){
24+
p_size = 0 ;
25+
memset(is, 0 , sizeof(is));
26+
for(int i = 2 ; i < MAXN; i += 1)
27+
if(is[i] == 0){
28+
for(int j = i + i ; j < MAXN; j += i )
29+
is[j] = 1 ;
30+
p[p_size ++ ] = i ;
31+
}
32+
}
33+
34+
35+
int my_swap(int idx1, int idx2){
36+
int v1 = val[idx1], v2 = val[idx2];
37+
map<int, int>::iterator it ;
38+
mp[idx1] = v2; mp[idx2] = v1;
39+
swap(val[idx1], val[idx2]);
40+
}
41+
42+
/*
43+
int find_prime(int v){
44+
int m , l = 0 , r = p_size;
45+
while(l + 1 < r){
46+
m = (l + r) >> 1;
47+
if(p[m] == v)
48+
return p[m];
49+
if (p[m] < v)
50+
l = m ;
51+
else
52+
r = m - 1;
53+
}
54+
return p[l];
55+
}*/
56+
57+
58+
int find_prime(int v){
59+
int t = p[0] ;
60+
for(int i = 0 ; i < v ; ++ i){
61+
if(p[i] > v) break;
62+
t = p[i];
63+
}
64+
return t;
65+
}
66+
67+
68+
void print_operation(int x, int y){
69+
while(x < y ){
70+
int d = y - x + 1 ;
71+
int v = find_prime(d);
72+
ret[ret_size][0] = x ; ret[ret_size][1] = y ; ret_size ++ ;
73+
printf("=========> %d (x,y,d) = (%d,%d, %d)\n" , v, x, x + v - 1 , d);
74+
//printf("%d %d\n", x , x + (*v) - 1);
75+
my_swap(val[x], val[x + v - 1]) ;
76+
x = x + v - 1 ;
77+
}
78+
}
79+
80+
81+
int main(){
82+
int n ;
83+
get_primes();
84+
while(scanf("%d", &n) !=EOF ){
85+
mp.clear();
86+
for(int i = 1 ; i <= n ; ++ i){
87+
scanf("%d", &val[i]);
88+
mp[ val[i] ] = i ;
89+
}
90+
int start_idx, end_idx ;
91+
ret_size = 0 ;
92+
for(int i = 1 ; i <= n ; ++ i){
93+
map<int, int>::iterator it = mp.begin();
94+
start_idx = i ; end_idx = it->second ;
95+
int min_value = it->first;
96+
print_operation(start_idx, end_idx);
97+
it = mp.find(min_value);
98+
mp.erase(it);
99+
}
100+
printf("%d\n", ret_size);
101+
for(int i = 0 ; i < ret_size ; ++ i)
102+
printf("%d %d\n", ret[i][0], ret[i][1]);
103+
}
104+
return 0 ;
105+
}
106+
107+

codeforces/round246/c.in

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
3
2+
3 2 1
3+
4+
2
5+
1 2
6+
7+
4
8+
4 2 3 1

0 commit comments

Comments
 (0)