125732024-12-23 14:45:364rt3xp02016. ápriliscpp17Elfogadva 32ms3240 KiB
#include<bits/stdc++.h>
using namespace std;

struct pt{
  int x,y;
};
pt operator+(const pt &l, const pt &r){
  return pt{l.x+r.x,l.y+r.y};
}
pt operator-(const pt &l, const pt &r){
  return pt{l.x-r.x,l.y-r.y};
}
bool operator<(const pt &l, const pt &r){
  return tie(l.x,l.y)<tie(r.x,r.y);
}
bool operator==(const pt &l, const pt &r){
  return tie(l.x,l.y)==tie(r.x,r.y);
}
pt rotl(pt p){
  return pt{-p.y,p.x}; 
}
pt rotr(pt p){
  return pt{p.y,-p.x};
}
pt rot(pt p){
  return pt{-p.x,-p.y};
}

int main(){
  vector<pt> d{{0,1},{1,0},{0,-1},{-1,0}}; int i=0;
  string s; cin >> s; int n=s.size();
  vector<pt> v; v.reserve(n+1); pt sum{0,0}; v.push_back(sum);
  for(char c: s){
    switch(c){
      case 'F':
        sum=sum+d[i];
        break;
      case 'R':
        i++; if(i>3) i=0;
        break;
      case 'L':
        i--; if(i<0) i=3;
        break;
    }
    v.push_back(sum);
  }
  i=0; set<pt> positions;
  for(int j=0;j<n;j++){
    switch(s[j]){
      case 'F':
        positions.insert(v[j]+rotl(v[n]-v[j+1]));
        positions.insert(v[j]+rotr(v[n]-v[j+1]));
        break;
      case 'R':
        positions.insert(v[j]+rot(v[n]-v[j+1]));
        positions.insert(v[j]+d[i]+rotl(v[n]-v[j+1]));
        i++; if(i>3) i=0;
        break;
      case 'L':
        positions.insert(v[j]+rot(v[n]-v[j+1]));
        positions.insert(v[j]+d[i]+rotr(v[n]-v[j+1]));
        i--; if(i<0) i=3;
        break;
    }
  }
  cout << positions.size() << '\n';
  /*for(pt i: positions){*/
  /*  cout << i.x << ' ' << i.y << '\n';*/
  /*}*/
}
1 - Elfogadva
Memória: 508KiB
Idő: 1ms

Program kimenete:
3
Elvárt kimenet:
3
Ellenőrző kimenete:
ok 1 number(s): "3"

2 - Elfogadva
Memória: 2908KiB
Idő: 32ms

Program kimenete:
34389
Elvárt kimenet:
34389
Ellenőrző kimenete:
ok 1 number(s): "34389"

3 - Elfogadva
Memória: 756KiB
Idő: 3ms

Program kimenete:
3355
Elvárt kimenet:
3355
Ellenőrző kimenete:
ok 1 number(s): "3355"

4 - Elfogadva
Memória: 3240KiB
Idő: 32ms

Program kimenete:
41690
Elvárt kimenet:
41690
Ellenőrző kimenete:
ok 1 number(s): "41690"

5 - Elfogadva
Memória: 2360KiB
Idő: 26ms

Program kimenete:
30736
Elvárt kimenet:
30736
Ellenőrző kimenete:
ok 1 number(s): "30736"

6 - Elfogadva
Memória: 2872KiB
Idő: 30ms

Program kimenete:
33948
Elvárt kimenet:
33948
Ellenőrző kimenete:
ok 1 number(s): "33948"

7 - Elfogadva
Memória: 2616KiB
Idő: 28ms

Program kimenete:
34519
Elvárt kimenet:
34519
Ellenőrző kimenete:
ok 1 number(s): "34519"

8 - Elfogadva
Memória: 2104KiB
Idő: 18ms

Program kimenete:
26668
Elvárt kimenet:
26668
Ellenőrző kimenete:
ok 1 number(s): "26668"

9 - Elfogadva
Memória: 1772KiB
Idő: 14ms

Program kimenete:
19065
Elvárt kimenet:
19065
Ellenőrző kimenete:
ok 1 number(s): "19065"

10 - Elfogadva
Memória: 1848KiB
Idő: 18ms

Program kimenete:
24051
Elvárt kimenet:
24051
Ellenőrző kimenete:
ok 1 number(s): "24051"

11 - Elfogadva
Memória: 1348KiB
Idő: 13ms

Program kimenete:
15004
Elvárt kimenet:
15004
Ellenőrző kimenete:
ok 1 number(s): "15004"

12 - Elfogadva
Memória: 2648KiB
Idő: 28ms

Program kimenete:
33443
Elvárt kimenet:
33443
Ellenőrző kimenete:
ok 1 number(s): "33443"

13 - Elfogadva
Memória: 1524KiB
Idő: 10ms

Program kimenete:
14721
Elvárt kimenet:
14721
Ellenőrző kimenete:
ok 1 number(s): "14721"

14 - Elfogadva
Memória: 1736KiB
Idő: 17ms

Program kimenete:
23380
Elvárt kimenet:
23380
Ellenőrző kimenete:
ok 1 number(s): "23380"

15 - Elfogadva
Memória: 1308KiB
Idő: 10ms

Program kimenete:
15615
Elvárt kimenet:
15615
Ellenőrző kimenete:
ok 1 number(s): "15615"

16 - Elfogadva
Memória: 1592KiB
Idő: 16ms

Program kimenete:
20447
Elvárt kimenet:
20447
Ellenőrző kimenete:
ok 1 number(s): "20447"

17 - Elfogadva
Memória: 2360KiB
Idő: 25ms

Program kimenete:
29690
Elvárt kimenet:
29690
Ellenőrző kimenete:
ok 1 number(s): "29690"

18 - Elfogadva
Memória: 2292KiB
Idő: 18ms

Program kimenete:
25230
Elvárt kimenet:
25230
Ellenőrző kimenete:
ok 1 number(s): "25230"

19 - Elfogadva
Memória: 1336KiB
Idő: 13ms

Program kimenete:
16860
Elvárt kimenet:
16860
Ellenőrző kimenete:
ok 1 number(s): "16860"

20 - Elfogadva
Memória: 824KiB
Idő: 7ms

Program kimenete:
9160
Elvárt kimenet:
9160
Ellenőrző kimenete:
ok 1 number(s): "9160"

21 - Elfogadva
Memória: 1336KiB
Idő: 13ms

Program kimenete:
17329
Elvárt kimenet:
17329
Ellenőrző kimenete:
ok 1 number(s): "17329"

22 - Elfogadva
Memória: 1268KiB
Idő: 9ms

Program kimenete:
13575
Elvárt kimenet:
13575
Ellenőrző kimenete:
ok 1 number(s): "13575"

23 - Elfogadva
Memória: 568KiB
Idő: 4ms

Program kimenete:
5038
Elvárt kimenet:
5038
Ellenőrző kimenete:
ok 1 number(s): "5038"

24 - Elfogadva
Memória: 1080KiB
Idő: 8ms

Program kimenete:
13363
Elvárt kimenet:
13363
Ellenőrző kimenete:
ok 1 number(s): "13363"

25 - Elfogadva
Memória: 2476KiB
Idő: 27ms

Program kimenete:
29598
Elvárt kimenet:
29598
Ellenőrző kimenete:
ok 1 number(s): "29598"

26 - Elfogadva
Memória: 2948KiB
Idő: 32ms

Program kimenete:
38908
Elvárt kimenet:
38908
Ellenőrző kimenete:
ok 1 number(s): "38908"