Professional Documents
Culture Documents
ANSWERS
ANSWERS
In c++
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <queue>
int main() {
vector<int> vec;
int q;
cin >> q;
int minval=1000000007;
bool flag=false;
int a,v;
cin >> a;
if (a==1)
cin >> v;
vec.push_back(v);
minval=min(minval,v);
}
if (a==2)
cin >> v;
if (v==minval)
flag=true;
if (vec[j]==v)
vec.erase(vec.begin()+j);
if (a==3)
if (flag)
minval=1000000007;
minval=min(minval,vec[j]);
flag = false;
}
}
/*
priority_queue<int> pq;
int q;
cin >> q;
int a,v;
cin >> a;
if (a==1)
cin >> v;
pq.push(-1*v);
if (a==2)
cin >> v;
pq.pop();
if (a==3)
//pq.pop();
*/
return 0;
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
int main() {
struct Point {
int x;
int y;
x = _x;
y = _y;
};
};
int n;
cin >> n;
char z[100][100];
z[x][y] = 0;
};
};
};
};
int a, b, c, d;
if (a == c && b == d) {
printf("0\n"); return 0;
//
z[a][b] = 'A';
z[c][d] = 'B';
vector<Point> q[2];
char s = -1;
while (1) {
// go left
{
if (z[left][i->y] == 'B') {
printf("%d\n", -s );
//Print(z,n);
return 0;
};
if (z[left][i->y] == '.') {
z[left][i->y] = s;
//Print(z, n);
q[(-s + 1) %
2].push_back(Point(left, i->y));
else if (z[left][i->y] != s) {
break;
};
// go right
if (z[right][i->y] == 'B') {
printf("%d\n", -s );
//Print(z, n);
return 0;
};
if (z[right][i->y] == '.') {
z[right][i->y] = s;
//Print(z, n);
q[(-s + 1) %
2].push_back(Point(right, i->y));
break;
};
// go up
if (z[i->x][up] == 'B') {
printf("%d\n", -s);
//Print(z, n);
return 0;
};
if (z[i->x][up] == '.') {
z[i->x][up] = s;
//Print(z, n);
q[(-s + 1) % 2].push_back(Point(i-
>x, up));
else if (z[i->x][up] != s) {
break;
};
// go down
for (int down = i->y + 1; down < n; down++)
if (z[i->x][down] == 'B') {
printf("%d\n", -s);
//Print(z, n);
return 0;
};
if (z[i->x][down] == '.') {
z[i->x][down] = s;
//Print(z, n);
q[(-s + 1) % 2].push_back(Point(i-
>x, down));
else if (z[i->x][down] != s) {
break;
};
};
s--;
};
};
Balanced Brackets
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include<stack>
#include<map>
int main() {
map<char,char>lol;
lol[')']='(';
lol[']']='[';
lol['}']='{';
int t;
cin >> t;
while(t--)
string s;
stack<char>st;
cin >> s;
int flag=0;
for(int i=0;s[i]!='\0';i++)
st.push(s[i]);
else{
else
flag=1;
break;
else
return 0;
Median Updates
#include <cstdio>
#include <set>
#include <cstring>
#include <string>
void gao() {
int a,b;
bool f1,f2;
if (s1.empty()) {
puts("Wrong!");
return;
if (s1.size()==s2.size()) {
a=*s1.rbegin();
b=*s2.begin();
f1=a%2;
f2=b%2;
if (f1==f2) {
printf("%.0lf\n",(a*1.+b)/2.);
else {
printf("%.1lf\n",(a*1.+b)/2.);
else {
printf("%d\n",*s1.rbegin());
}
void gao1(int x) { //add x
if (s1.empty()) {
s1.insert(x);
else if (s1.size()==s2.size()) {
s2.insert(x);
s1.insert(*s2.begin());
s2.erase(s2.begin());
else {
s1.insert(x);
s2.insert(*s1.rbegin());
s1.erase(s1.find(*s1.rbegin()));
gao();
void gao2(int x) {
multiset<int>::iterator t1=s1.find(x),t2=s2.find(x);
puts("Wrong!");
return;
if (s1.size()==s2.size()) {
if (t2!=s2.end()) {
s2.erase(t2);
else {
s1.erase(t1);
s1.insert(*s2.begin());
s2.erase(s2.begin());
else if (t1!=s1.end()) {
s1.erase(t1);
else {
s2.erase(t2);
s2.insert(*s1.rbegin());
s1.erase(s1.find(*s1.rbegin()));
gao();
int main() {
int i,x;
/*s1.clear();
s2.clear();*/
for (scanf("%d",&i);i;--i) {
scanf("%s%d",s,&x);
if (s[0]=='a') {
gao1(x);
else {
gao2(x);
return 0;
Merging Communities
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
int find(int x) {
if (x == f[x]) return x;
s[fx] += s[fy];
} else {
f[fx] = fy;
s[fy] += s[fx];
int Q, N;
char c[5];
int main() {
scanf("%s", c);
if (c[0] == 'M') {
merge(x, y);
} else {
printf("%d\n", s[find(x)]);
return 0;