Петрик і змійка
#include <iostream>
#include <set>
using namespace std;
int main(){
int x,y;
scanf("%d%d\n",&x,&y);
string s; cin>>s;
set < pair<int,int> > mnoz;
mnoz.insert(make_pair(x,y));
bool flag=false;
for (int i=0;i<s.size();i++){
char c=s[i];
switch(c){
case 'U': y++; break;
case 'D': y--; break;
case 'R': x++; break;
case 'L': x--; break;
}
if (mnoz.count(make_pair(x,y) )){
flag=true;
cout<<"Fail"<<"\n";
cout<<i+1;
break;
}
mnoz.insert(make_pair(x,y));
}
if (flag==false){
cout<<"Success";
}
system ("pause");
return 0;
}
алготестер №1532
#include <iostream>
#include <vector>
#include <algorithm>
#include <utility>
using namespace std;
long nsd(long long a, long long b){
while (b!=0){
long ost=a%b;
a=b;
b=ost;
}
return a;
}
bool sortbysec(const pair<long long,long long> &a, const pair<long long,long long> &b) {
return (a.second < b.second);
}
int main(){
long x0,y0; cin>>x0>>y0;
long n; cin >>n;
long kmax=0, k=0;
if (n==1){cout <<kmax<<endl;return 0;}
vector< pair<long long,long long> > koord;
for(long i = 0; i < n; i++) {
long x1,y1;
cin >>x1>>y1;
long long k1=(y1-y0);
long long k2=(x1-x0);
long long d=nsd(abs(k1),abs(k2));
k1=k1/d;
k2=k2/d;
koord.push_back(make_pair(k1,k2));
}
sort(koord.begin(),koord.end(),sortbysec);
sort(koord.begin(),koord.end());
for(long i = 0; i < n-1; i++) {
if(koord[i].first==koord[i+1].first && koord[i].second==koord[i+1].second){
k++;}
else {
if(k>kmax){kmax=k;}
k=0;
}
}
if(k>kmax){kmax=k;}
cout <<kmax<<endl;
system("pause");
}